/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo;
import java.io.*;
import java.util.*;
/**
 *
 * @author user
 */
public class TestSer {
    public static void main(String[] args) throws Exception{

     FileOutputStream fos = new FileOutputStream("test.ser");
     ObjectOutputStream os = new ObjectOutputStream(fos);
     Prueba p = new Prueba(358);
     os.writeObject(p);
     os.close();
     FileInputStream fis = new FileInputStream("test.ser");
     ObjectInputStream is = new ObjectInputStream(fis);
     p = (Prueba) is.readObject();
     System.out.println("Datos: " + p.getDatos());
     System.out.println("Hora actual: " + p.getHoraActual());
     is.close();
  }
}

class Prueba implements Serializable{

  private static final long seriaVersionUID = 3L; //
  private transient int datos; //son transient pero necesitamos serializarlos
  private transient Date horaActual;//lo queremos sólo en el servidor receptor

  public Prueba(int datos){
     this.datos = datos;
     this.horaActual = new Date();
  }

  private void writeObject(ObjectOutputStream os){
     try{
        os.defaultWriteObject(); //el método por defecto
        /*ahora escribimos lo que queremos que haga*/
        os.writeInt(datos);
        System.out.println("Serialización");
     }catch(IOException e){
        e.printStackTrace();
     }
  }

  private void readObject(ObjectInputStream is){
     try{
        is.defaultReadObject();
        datos = is.readInt();
        horaActual = new Date();
        System.out.println("Recuperación");
     }catch(IOException e){
        e.printStackTrace();
     }catch(ClassNotFoundException e){
        e.printStackTrace();
     }
  }

  public int getDatos(){
     return datos;
  }

  public Date getHoraActual(){
     return horaActual;
  }

}